#define _CRT_SECURE_NO_WARNINGS 1

//#include <stdio.h>
//#include <stdlib.h>
//#include <string.h>
//
//char* GetMemory()
//{
//	char* p = (char*)malloc(strlen("Hello,world") + 1);
//	if (p == NULL)
//	{
//		perror("malloc");
//		return 1;
//	}
//	strcpy(p, "Hello world");
//	return p;
//
//}
//
//void Test()
//{
//	char* str = NULL;
//	str = GetMemory();
//	printf(str);
//	free(str);
//	str = NULL;
//}
//
//int main()
//{
//	Test();
//	return 0;
//}
//#include <stdio.h>
//#include <stdlib.h>
//
//int** GetMemory(int** p)
//{
//	p = (int**)calloc(10, sizeof(int**)); 
//	return p;
//}
//
//void Test()
//{
//	int* p = NULL;
//	int* p1 = GetMemory(&p);
//	if (p1 == NULL)
//	{
//		perror("calloc");
//		return 1;
//	}
//	p = p1;
//	int i = 0;
//	for (i = 0; i < 10; i++)
//	{
//		*(p + i) = i;
//		printf("%d ", *(p + i));
//	}
//	free(p);
//	p = NULL;
//}
//
//int main()
//{
//	Test();
//	return 0;
//}

//#include <stdio.h>
//#include <stdlib.h>
//#include <string.h>
//
//char** GetMemory(char** p)
//{
//	p = (char**)malloc(100);
//	return p;
//}
//
//void Test()
//{
//	char* str = NULL;
//	str = GetMemory(&str);
//	strcpy(str, "Hello world");
//	printf(str);
//}
//
//int main()
//{
//	Test();
//	return 0;
//}

#include <stdio.h>
#include <stdlib.h>

int main()
{
	int* ptr = (int*)malloc(10*sizeof(int));
	if (ptr == NULL)
	{
		perror("malloc");
		return 1;
	}
	int i = 0;
	for (i = 0; i < 10; i++)
	{
		*(ptr + i) = i;
		printf("%d ", *(ptr + i));
	}
	printf("\n");
	int* p = realloc(ptr, 20*sizeof(int));
	if (p == NULL)
	{
		perror("realloc");
		return 1;
	}
	ptr = p;
	p = NULL;
	for (i = 0; i < 20; i++)
	{
		*(ptr + i) = i;
		printf("%d ", *(ptr + i));
	}
	free(ptr);
	ptr = NULL;
	return 0;
}